package com.md.application.assembler;


import com.md.domain.model.GoodsType;
import com.md.model.request.goods.InsertGoodsTypeRequest;
import com.md.model.system.CommonResult;
import com.md.util.StringUtil;
import com.md.value.constants.GoodsTypeConstants;
import com.md.value.enums.ErrorEnum;
import org.springframework.util.ObjectUtils;

/**
 * @author 刘骄阳
 * 2022-06-12 03:13:44
 */
public class GoodsTypeAssembler {
  private GoodsTypeAssembler() {
  }

  public static CommonResult<ErrorEnum> judgeRequest(final InsertGoodsTypeRequest request) {
    if (ObjectUtils.isEmpty(request.getName())) {
      // 用户名为空
      return CommonResult.error(ErrorEnum.IS_EMPTY, "商品分类名");
    }
    if (ObjectUtils.isEmpty(request.getParentId())) {
      // 父级分类id为空
      return CommonResult.error(ErrorEnum.IS_EMPTY, "父级分类");
    }
    return CommonResult.success();
  }

  public static GoodsType build(final InsertGoodsTypeRequest request,
                                final GoodsType parentGoodsType,
                                final Long sort) {
    GoodsType goodsType = new GoodsType();
    goodsType.setName(request.getName());
    goodsType.setFirstName(StringUtil.getFirstLetter(goodsType.getName()).substring(0, 1));
    goodsType.setSort(sort.intValue());
    if (!ObjectUtils.isEmpty(parentGoodsType)) {
      goodsType.setParentId(parentGoodsType.getId());
      goodsType.setRootId(parentGoodsType.getRootId());
    } else {
      goodsType.setParentId(GoodsTypeConstants.DEFAULT_ROOT_GOODS_TYPE_ID);
    }
    return goodsType;
  }
}
